import pandas as pd

# 读取 Excel 文件
excel_file = pd.ExcelFile('D:\\小\\student-reading\\student.xlsx')

# 获取指定工作表中的数据
df = excel_file.parse('Sheet1')

print('数据基本信息：')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows < 100 and columns < 20:
    # 短表数据（行数少于100且列数少于20）查看全量数据信息
    print('数据全部内容信息：')
    print(df.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print('数据前几行内容信息：')
    print(df.head().to_csv(sep='\t', na_rep='nan'))

# 按性别统计学生人数
gender_count = df['性别'].value_counts()

# 定义年龄段区间
age_bins = [0, 18, 25, 40, 100]
age_labels = ['0 - 18岁', '19 - 25岁', '26 - 40岁', '41岁及以上']

# 按年龄段统计学生人数
df['年龄段'] = pd.cut(df['年龄'], bins=age_bins, labels=age_labels)
age_count = df['年龄段'].value_counts()

# 定义提取地区的函数
def extract_region(address):
    if '海南省' in address:
        if '市' in address:
            return address.split('市')[0].replace('海南省', '')
        elif '县' in address:
            return address.split('县')[0].replace('海南省', '')
    else:
        return address.split('省')[0]
    return '其他'

# 按地区统计学生人数
df['地区'] = df['家庭地址'].apply(extract_region)
region_count = df['地区'].value_counts()

# 打印统计结果
print('\n按性别统计学生人数：')
print(gender_count)
print('\n按年龄段统计学生人数：')
print(age_count)
print('\n按地区统计学生人数：')
print(region_count)